﻿//--------------------------------------
// Copyright     : W.A.I.S. TECHNOLOGY 2003-2008 ; http://www.wais-fr.com ; email: infos@wais-fr.com
// Author        : Henri d'Orgeval
// Contributors  : 
// Last release  : 2007/10/22 (yy/mm/dd)
// Version       : 1.0.0.0
// Pattern       : "Real Time Trace"
// Internal name : RTTParamInfo (RealTimeTrace Parameter Info)
// Description   : this file contents all interfaces needed to implement RealTimeTrace
//                 
// Framework     : v2.0.50727 and above
//
// Licence       : Microsoft Permissive Licence
// W.A.I.S provides this code in the hope that it will be useful, but WITHOUT ANY WARRANTY , either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.          
// This library is free software; you can redistribute it and/or modify it under the terms of the Microsoft Permissive Licence
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
//---------------------------------------
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;

namespace RealtimeTrace
{
    /// <summary>
    /// Interface that setup all information for a single parameter passed to a method/property in which an exception occured.
    /// </summary>
    public interface ITraceParamInfo
    {
        /// <summary>
        ///  Gets or Sets the signature position for the parameter.
        /// </summary>
        System.Int32 Position
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or Sets the name of the parameter.
        /// </summary>
        System.String Name
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the type of the parameter.
        /// </summary>
        System.String ParameterType
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or Sets the value of the parameter. 
        /// The value of the parameter is the result of the call to the ToString method on the parameter.
        /// </summary>
        System.String Value
        {
            get;
            set;
        }

        /// <summary>
        /// Gets the details associated with this parameter.
        /// Each Detail is made of a pair Key/Value
        /// </summary>
        System.Collections.Generic.Dictionary<String, System.Object> Details
        {
            get;
        }

        /// <summary>
        /// Add a detailed info to the internal Dictionary.
        /// </summary>
        /// <param name="detailKey">Any string that uniquely identifies the detail.</param>
        /// <param name="value">The object that is associated with this detail.</param>
        /// <returns></returns>
        System.Boolean AddDetails(System.String detailKey, System.Object value);

       
        /// <summary>
        /// Gets or Sets a dump representation of the parameter.
        /// </summary>
        System.String Dump
        {
            get;
            set;
        }

    }
}
